package cn.iocoder.boot.kmeans;

public class Talent {
    private int[] features; // 特征向量，如技能、经验、教育背景等量化值（整数）
    private String name;    // 候选人姓名
    private int salary;     // 最低薪资要求

    // 构造方法，初始化人才对象
    public Talent(String name, int[] features, int salary) {
        this.name = name;
        this.features = features;
        this.salary = salary;
    }

    // 获取特征向量
    public int[] getFeatures() {
        return features;
    }

    // 获取候选人姓名
    public String getName() {
        return name;
    }

    // 获取最低薪资要求
    public int getSalary() {
        return salary;
    }

    // 计算两个人才特征向量之间的欧氏距离
    public double distanceTo(Talent other) {
        double sum = 0.0;
        // 遍历特征向量的每个维度，计算差值的平方和
        for (int i = 0; i < features.length; i++) {
            sum += Math.pow(features[i] - other.features[i], 2);
        }
        // 返回平方和的平方根，即欧氏距离
        return Math.sqrt(sum);
    }

    @Override
    public String toString() {
        return "技能: " + features[0] + ", 经验: " + features[1] + ", 教育背景: " + features[2] + ", 最低薪资要求: " + salary;
    }
}